home *** CD-ROM | disk | FTP | other *** search
- // Abtest4.prg
- //
- // Test routine to exercise simulated array browse class
- // Browses database file names in one window, and the structure
- // of the currently selected one in another.
- // Uses a real sub class generated by Class(Y)
-
- #include "Directry.ch"
- #include "InKey.ch"
- #include "DbStruct.ch"
-
- #define CHILD_DELAY .3
-
- FUNCTION AbTest4
-
- LOCAL oTbrFiles := arrayBrowse():init()
- LOCAL aFiles := Directory("*.dbf")
- LOCAL lExitRequested := .F.
- LOCAL nKey
- LOCAL oTbc
- LOCAL oTbrStru := arrayBrowse():init()
- LOCAL aStru
- LOCAL nSaveSel
- LOCAL cLastDbfName := ""
- LOCAL cThisDbfName
-
- IF Len(aFiles) < 1
- Alert("No matching files")
- QUIT
- ENDIF
-
- oTbrFiles:arrayReference := aFiles
-
- TBInit(oTbrFiles, 1, 1, MaxRow() - 1, 29)
-
- CLEAR SCREEN
- @ 0, 0 TO MaxRow(), 30
-
- oTbc := TBColumnNew("File Name", ;
- {|| aFiles[oTbrFiles:arrayIndex, F_NAME] })
- oTbc:width := 12
- oTbrFiles:addColumn(oTbc)
-
- oTbc := TBColumnNew("File Size", ;
- {|| aFiles[oTbrFiles:arrayIndex, F_SIZE] })
- oTbrFiles:addColumn(oTbc)
-
- oTbc := TBColumnNew("File Date", ;
- {|| aFiles[oTbrFiles:arrayIndex, F_DATE] })
- oTbrFiles:addColumn(oTbc)
-
- oTbc := TBColumnNew("File Time", ;
- {|| aFiles[oTbrFiles:arrayIndex, F_TIME] })
- oTbrFiles:addColumn(oTbc)
-
- TBInit(oTbrStru, 1, 32, MaxRow() - 1, MaxCol() - 1)
-
- oTbc := TBColumnNew("Name", ;
- {|| oTbrStru:arrayReference[oTbrStru:arrayIndex, ;
- DBS_NAME] })
- oTbc:width := 12
- oTbrStru:addColumn(oTbc)
-
- oTbc := TBColumnNew("Type", ;
- {|| oTbrStru:arrayReference[oTbrStru:arrayIndex, ;
- DBS_TYPE] })
- oTbc:width := 4
- oTbrStru:addColumn(oTbc)
-
- oTbc := TBColumnNew("Len", ;
- {|| oTbrStru:arrayReference[oTbrStru:arrayIndex, ;
- DBS_LEN] })
- oTbrStru:addColumn(oTbc)
-
- oTbc := TBColumnNew("Dec", ;
- {|| oTbrStru:arrayReference[oTbrStru:arrayIndex, ;
- DBS_LEN] })
- oTbrStru:addColumn(oTbc)
-
- @ 0, 31 TO MaxRow(), MaxCol()
-
- DO WHILE !lExitRequested
- DO WHILE NextKey() == 0 .AND. !oTbrFiles:stabilize()
- ENDDO
-
- IF NextKey() != 0
- nKey := InKey()
- ELSE
- nKey := InKey(CHILD_DELAY)
- IF nKey == 0
- // No key occurred within timeout - check to see whether
- // need to redraw child TBrowse
- cThisDbfName := oTbrFiles:arrayReference[oTbrFiles:arrayIndex, ;
- F_NAME]
- IF !(cLastDbfName == cThisDbfName)
- nSaveSel := Select()
- USE (cThisDbfName) NEW
- aStru := DbStruct()
- CLOSE (cThisDbfName)
- SELECT (nSaveSel)
- oTbrStru:arrayReference := aStru
-
- DispBegin()
- oTbrStru:refreshAll()
- DO WHILE !oTbrStru:stabilize()
- ENDDO
- oTbrStru:deHilite()
- DispEnd()
-
- cLastDbfName := cThisDbfName
- ENDIF
- ENDIF
- ENDIF
-
- IF !StdMeth(oTbrFiles, nKey)
- // Handle exceptions
- DO CASE
- CASE nKey == K_ESC
- lExitRequested := .T.
- ENDCASE
- ENDIF
-
- ENDDO
-
- RETURN NIL
-